package com.lagou.boot.config;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

/**
 * 替代web.xml加载dispatcherServlet
 */
public class MyWebApplicationInitializer implements WebApplicationInitializer {

    private static boolean firstFlag = true;

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        if (firstFlag) {
            // Load Spring web application configuration
            //通过注解的方式初始化Spring的上下文
            AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
            //注册spring的配置类（替代传统项目中xml的configuration）
            ac.register(AppConfig.class);
            ac.refresh();
            // Create and register the DispatcherServlet
            //基于java代码的方式初始化DispatcherServlet
            DispatcherServlet servlet = new DispatcherServlet(ac);
            ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet);
            registration.setLoadOnStartup(1);
            registration.addMapping("/app/*");
            firstFlag = false;
        }

    }

}
